package org.patterns.creational.prototype.shallowclone;

/**
 * 表示周记的类，实现了Cloneable接口以支持对象的克隆
 */
public class WeeklyLog implements Cloneable {
    // 周记的标题
    private String name;
    // 周记的日期
    private String date;
    // 周记的内容
    private String content;
    // 定义一个类级别的私有变量，用于存储附件信息
    private Attachment attachment;

    /**
     * 获取周记的标题
     *
     * @return 周记的标题
     */
    public String getName() {
        return (this.name);
    }

    /**
     * 设置周记的标题
     *
     * @param name 周记的新标题
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取周记的日期
     *
     * @return 周记的日期
     */
    public String getDate() {
        return (this.date);
    }

    /**
     * 设置周记的日期
     *
     * @param date 周记的新日期
     */
    public void setDate(String date) {
        this.date = date;
    }

    /**
     * 获取周记的内容
     *
     * @return 周记的内容
     */
    public String getContent() {
        return (this.content);
    }

    /**
     * 设置周记的内容
     *
     * @param content 周记的新内容
     */
    public void setContent(String content) {
        this.content = content;
    }

    /**
     * 获取附件信息
     *
     * @return 附件对象
     */
    public Attachment getAttachment() {
        return (this.attachment);
    }

    /**
     * 设置附件信息
     *
     * @param attachment 附件对象
     */
    public void setAttachment(Attachment attachment) {
        this.attachment = attachment;
    }

    /**
     * 实现对象的浅克隆通过调用Object类的clone()方法
     *
     * @return 克隆出的新实例如果克隆不成功，则返回null
     */
    public WeeklyLog clone() {
        Object obj = null;
        try {
            obj = super.clone();
            return (WeeklyLog) obj;
        } catch (CloneNotSupportedException e) {
            System.out.println("不支持复制！");
            return null;
        }
    }
}
